---
title: 项目简介
description: A guide in my new Starlight docs site.
sidebar:
  order: 1
---
import { FileTree } from '@astrojs/starlight/components';

## 简介
driver-box 是一款支持泛化协议接入的边缘网关框架， 以插件化的形式融合了 Modbus、Bacnet、HTTP、MQTT 等主流协议，同时也支持基于TCP的各类私有化协议对接。

![](/driver-box/framework.svg)

我们期望 driver-box 能够为相关人士提供更加高效、舒适的设备接入体验。 

通过对各类设备的通信协议和数据交互形式进行抽象，定义了一套标准流程以涵盖各类通信协议的共性逻辑，并结合动态解析脚本（Lua）填补其中的差异化部分。

以此解决设备接入过程中存在的驱动工程数量爆炸；接入标准难以规范化等问题。

### 特性
**免费开源**    
采用商业友好的 Apache-2.0 开源协议，使其成为 IoT 生态圈的极佳选择。

**架构**      
以 Golang 为主要开发语言，可编译出适配 amd64、arm64、armv7、x86 等系统架构的可执行程序。
存储空间和运行内存控制在十几MB，满足低规格网关的运行需求。

采用高度统一的配置化方式对接各类通讯设备。理想情况下只需编写一个 JSON 文件便可完成设备接入，亦可结合 lua 脚本实现复杂设备的数据加工。

通过精心的架构设计，三方用户可无限扩展边缘网关的设备通讯能力和应用服务能力。

**API**     
driver-box 没有提供配套的 UI 界面，但开放了大量实用 RestAPI。用户可以自由设计网关 UI，定制出极致用户体验的边缘产品。

**应用场景**        
driver-box 适用于多种场景，包括智能家居、智慧楼宇、智慧工厂、智慧门店。它促进了设备数据的采集与场景融合，实现了万物皆可连、万物皆可互联、万物皆可智联。

## 名词解释
### 插件（Plugin）
在 driver-box 中，「**插件**」这个词专指：通讯插件，例如：Http插件、Modbus插件、Bacnet插件。

插件是 driver-box 提供了一项开放性能力，如若内置的插件不满足需求，用户可参考《[通讯插件开发](/driver-box/developer/plugin/)》实现一款自定义插件并集成至 driver-box。

### Export
Export，一时找不到合适的中文名词来表示这个单词在 driver-box 中的用途。

它也是 driver-box 提供的一项开放性能力，用于处理 driver-box 向上层传递的设备数据和事件。

以此，我们可以实现类似场景联动、边缘计算、数据上云等一系列高级能力。而这些能力的组织与融合，便形成了完整的边缘引擎产品。

[《Export 开发》](/driver-box/developer/export/)。

### 资产库
资产库是 driver-box 框架提供的一种资源管理能力。通过持续沉淀和复用资产库中的已有资源，逐渐提升项目工程实施效率。

:::tip[为什么叫资产库，而不是资源库？]
虽然本质上都是一些配置型资源文件，但我们认为这些资源文件都是企业实际项目的宝贵经验积累。
这份积累能够在帮助企业极大的提升产品后期推广、复制效率，从某种角度而言，它更像企业的一份独特资产。

:::

资产库存储于`res/library/`目录。
<FileTree>

    - driver-box
        - res
            - library
                - index.json    资产库索引文件，便于快速定位资源
                - driver/       设备层驱动库
                - mirror_tpl/   镜像模块库
                - model/        物模型库
                - protocol/     通信协议层驱动库
</FileTree>

### 虚拟设备
虚拟设备是 driver-box 框架提供的一种设备通讯方式模拟能力。
使用户可在无需对接真实设备的情况下，进行本地设备配置和调试。

开启虚拟设备模式，只需将 connections 中的 `virtual` 配置项设置为 `true`。

现以支持以下几种通讯插件：
- Bacnet
- [Modbus](../../plugins/modbus/#虚拟设备)

### Event
Event 是 driver-box 框架提供的一种事件通知能力。